#include <cstdio>
#include <vector>
using namespace std;
vector< vector<int> > v;
static int N, M;
int tot[100] = {0};
void dfs(int index, int depth)
{
    int size = v[index].size();
    tot[depth]++;
    if(0 == size)return ;
    else{
        for(int i = 0; i < size; ++i)
            dfs(v[index][i], depth + 1);
    }
}
int maxgen()
{
    int max = 0, index = 1;
    for(int i = 1; i < N; ++i)
    {
        if(tot[i] > max)
        {
            max = tot[i];
            index = i;
        }
    }
    return index;
}
int main()
{
    scanf("%d%d", &N, &M);
    v.resize(N + 1);
    int index, num, tmp;
    for(int i = 0; i < M; ++i)
    {
        scanf("%d%d", &index, &num);
        for(int j = 0; j < num; ++j)
        {
            scanf("%d", &tmp);
            v[index].push_back(tmp);
        }
    }
    // if(0 == M)
    // {//特判。怎么统一处理？
    //     printf("1 1\n");
    //     return 0;
    // }
    dfs(1, 1);
    int maxg = maxgen();
    printf("%d %d\n", tot[maxg], maxg);
    return 0;
}